import axios from "axios";

// axios.defaults.baseURL = "http://localhost:8080"
axios.defaults.baseURL = "/api"

// url：请求路径，如'/api/user'
// myParams: GET请求携带的参数
export function doGet(url, myParams) {
  return axios.get(url, {
    params: myParams
  });
}

export function doDelete(url, myParams) {
  return axios.delete(url, {
    params: myParams
  });
}

// url：请求路径，如'/api/user'
// myData: POST请求携带的参数
export function doPost(url, myData) {
  return axios.post(url, myData);
}

export function doPut(url, myData) {
  return axios.put(url, myData);
}

// 普通上传文件
export function poolUploadFile(data) {
  return axios.post(
    '/poolUploadFile', 
    data,
    {
      headers: {'Content-Type': 'multipart/form-data'}
    }
  )
}

// 获取文件列表
export function getFileList(userId) {
  return axios.get('/getFileList', {
    params: { // get请求携带的参数
      userId: userId
    }
  });
}

// 分片上传文件
export function chunkUploadFile(data) {
  return axios.post(
    '/chunkUploadFile', 
    data,
    {
      headers: {'Content-Type': 'multipart/form-data'}
    }
  )
}

// 合并分块文件
export function mergeChunks(data) {
  return axios.post('/mergeChunks', 
    data,
    {
      headers: {'Content-Type': 'application/json'}
    }
  )
}

// 下载文件
export function downloadFile(objectName) {
  return axios.get('/downloadFile', {
    params: { // get请求携带的参数
      objectName: objectName
    },
    responseType: 'blob', // 重要！设置返回值类型，告诉axios将响应数据作为Blob对象处理。不设置此项会导致文件数据被错误解析。Blob(Binary Large Object)表示二进制大对象
  });
}

// 删除文件
export function deleteFile(objectName) {
  return axios.delete('/deleteFile', {
    params: {
      objectName: objectName
    }
  });
}